home *** CD-ROM | disk | FTP | other *** search
/ Nebula 1 / Nebula One.iso / Internet / News / Alexandra.0.82 / Source / NewsgroupBrowserCell.m < prev    next >
Encoding:
Text File  |  1996-01-30  |  2.1 KB  |  78 lines

  1.  
  2. #import "NewsgroupBrowserCell.h"
  3. #import "Newsgroup.h"
  4. #import "GrayCell.h"
  5.  
  6. @implementation NewsgroupBrowserCell
  7.  
  8. - setTextAttributes:textObj
  9. {
  10.    [super setTextAttributes:textObj];
  11.    if (newsgroupCell && [self isLeaf] && ![newsgroupCell isSubscribed])
  12.       [textObj setTextGray:NX_DKGRAY];
  13.    else
  14.       [textObj setTextGray:NX_BLACK];      
  15.    return textObj;
  16. }
  17.  
  18. - drawInside:(const NXRect *)cellFrame inView:controlView
  19. {
  20.    NXRect numrect;
  21.    static id sharedTextCell = nil;
  22.    char numstr[40];
  23.    long n;
  24.  
  25.    //make cell
  26.    if (!sharedTextCell) {
  27.        sharedTextCell = [[GrayCell alloc] init];
  28.        [sharedTextCell setWrap:NO];
  29.        [sharedTextCell setFont:[self font]];
  30.        [sharedTextCell setDrawGray:FALSE];
  31.     }
  32.  
  33.    [super drawInside:cellFrame inView:controlView];
  34.    if([self isLeaf] && (newsgroupCell!=nil)&&
  35.       ((n=[newsgroupCell numberUnreadArticles])!=0)){
  36.       // draw number unread articles to the right
  37.       sprintf(numstr,"%ld",n);
  38.       [sharedTextCell setStringValue:numstr];
  39.         [sharedTextCell setDrawGray:![newsgroupCell isSubscribed]];
  40.       NX_WIDTH(&numrect)=[[sharedTextCell font] getWidthOf:numstr]+4.0;
  41.       NX_HEIGHT(&numrect)=NX_HEIGHT(cellFrame);
  42.       NX_X(&numrect)=NX_X(cellFrame)+NX_WIDTH(cellFrame)- NX_WIDTH(&numrect);
  43.       NX_Y(&numrect)=NX_Y(cellFrame);
  44.       PSsetgray((cFlags1.state || cFlags1.highlighted) ? NX_WHITE : NX_LTGRAY);
  45.       NXRectFill(&numrect);
  46.       [sharedTextCell drawInside:&numrect inView:controlView];
  47.    }
  48.    PSsetgray(NX_DKGRAY);
  49.    if (cFlags1.state || cFlags1.highlighted){
  50.       NXRect rectArray[2];
  51.  
  52.       NXSetRect(&(rectArray[0]),NX_X(cellFrame),NX_Y(cellFrame), NX_WIDTH(cellFrame),1);
  53.       NXSetRect(&(rectArray[1]),NX_X(cellFrame),NX_MAXY(cellFrame)-1,
  54. NX_WIDTH(cellFrame), 1.0);
  55.       NXRectFillList(rectArray, 2);
  56.    }
  57.  
  58.    return self;
  59. }
  60.  
  61. - highlight:(const NXRect *)cellFrame inView:controlView lit:(BOOL)flag
  62. {
  63.     if(cFlags1.highlighted != flag){
  64.        cFlags1.highlighted = flag;
  65.        [self drawInside:cellFrame inView:controlView];
  66.     }
  67.     return self;
  68. }
  69.  
  70. - setNewsgroupCell:cell;
  71. {
  72.    newsgroupCell=cell;
  73.  
  74.    return self;
  75. }
  76.  
  77. @end
  78.